package com.chenchao.javafile;

import java.io.*;

/**
 * @encoding : UTF-8
 * @Time : 2020/11/19 16:35
 * @Author : Chen Chao
 * @File : javaSE.com.chenchao.javafile.Test15.java
 * @Software : IntelliJ IDEA
 * @since : 1.8
 * 打印流
 */
public class Test15 {
    public static void main(String[] args) {
        //test01();
        //test02();
        test03();
    }

    /**
     * 使用的System.out作为打印流对象
     */
    public static void test01() {
        PrintStream p = System.out;
        p.println("I'm ok");
        p.println("I'm ok");
        p.println("I'm ok");
        p.println("I'm ok");
    }

    /**
     * 使用打印流对文件进行输入操作
     */
    public static void test02() {
        try (PrintStream printStream = new PrintStream(new BufferedOutputStream(
                new FileOutputStream("myjava01/src/fo/print.txt")), true))
        //true为自动刷新，默认为false
        {
            for (int i = 0; i < 10; i++) {
                printStream.println("我是打印流");
                Thread.sleep(1000);
            }
        } catch (InterruptedException | FileNotFoundException e) {
            e.printStackTrace();
        }

    }

    /**
     * 更改控制台输出端
     */
    public static void test03() {
        try (PrintStream printStream = new PrintStream("myjava01/src/fo/print.txt")) {
            //重定向输出端
            System.setOut(printStream);
            System.out.println("System在文件中打印");
            //重定向到控制台
            System.setOut(new PrintStream(new BufferedOutputStream
                    (new FileOutputStream(FileDescriptor.out)),true));
            //标准输入输出流
            System.out.println("System在控制台打印");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
